import cv2
import numpy as np

src = cv2.imread("./img/words.png")
img = cv2.imread("./img/words.png", 0)
img_copy = img.copy()  # 复制原图像

# 由于文字是黑色，背景是白色 ==> 为了处理文字，我们需要白色文字，黑色的背景
# 如果要让整个图的颜色反转，则需要设置一个阈值
# 如果小于该阈值的部分设置为 255，大于该阈值，设置为0
h, w = img.shape
# 设置阈值
threshold = 127
for i in range(h):
    for j in range(w):
        if img[i, j] < threshold:
            img_copy[i, j] = 255
        else:
            img_copy[i, j] = 0

# 对黑白图进行膨胀操作
kernel = np.ones((5, 5))
img_copy = cv2.dilate(img_copy, kernel)
img_copy = cv2.dilate(img_copy, kernel)

# 使用轮廓检测，检测内部的文字内容
contours, _ = cv2.findContours(img_copy, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE)
for contour in contours:
    x, y, w, h = cv2.boundingRect(contour)
    cv2.rectangle(src, (x, y), (x + w, y + h), color=(0, 0, 255), thickness=2)

cv2.imshow("img_copy", img_copy)
cv2.imshow("img", src)
cv2.waitKey(0)
